package DEEPERsource.DEEPERsource.source.preprocessing;

import java.util.List;
import java.util.Map;
import java.util.Set;

import deeper.Protein;

/**
 * This class is a Compositor in terms of the Strategy pattern,
 * i.e. it is an abstraction of different sentence preprocessing 
 * strategies, that could be used on every sentence. 
 * 
 * @author tfayruzo
 *
 */
public interface Preprocessor {
	/**
	 * Convention for the format of the Map:
	 * Mandatory key: sentence, value - modified sentence
	 * keys of format "ccoid\\d+" should hold shortenings
	 * keys of format "ccoterm\\d+" should hold protein names
	 * Example:
	 * argument : It is a sigma(F), also known as 1-some-(very)complex-2-35-'formula.
	 * Returned Map:
	 * 	sentence - It is a ccoterm1, also known as ccoid1.
	 * 	ccoterm1 - sigma(F)
	 *  ccoid1 - 1-some-(very)complex-2-35-'formula
	 * @param sentence
	 * @return
	 */
	public Map<String,String> preprocessSentence(String sentence, Set<Protein> interactors, List<Protein> proteins);
}
